package com.ruoyi.project.modules.pageTag.service.impl;

import java.util.List;

import cn.hutool.core.collection.CollectionUtil;
import com.ruoyi.project.modules.fileInfo.domain.FileInf;
import com.ruoyi.project.modules.filePageTagRef.domain.FilePageTagRef;
import com.ruoyi.project.modules.filePageTagRef.mapper.FilePageTagRefMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.project.modules.pageTag.mapper.PageTagMapper;
import com.ruoyi.project.modules.pageTag.domain.PageTag;
import com.ruoyi.project.modules.pageTag.service.IPageTagService;
import com.ruoyi.common.core.text.Convert;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;

/**
 * 页面标签信息Service业务层处理
 *
 * @author smallrain
 * @date 2022-03-22
 */
@Service
public class PageTagServiceImpl implements IPageTagService {
    @Resource
    private PageTagMapper pageTagMapper;
    @Resource
    private FilePageTagRefMapper filePageTagRefMapper;

    /**
     * 查询页面标签信息
     *
     * @param id 页面标签信息主键
     * @return 页面标签信息
     */
    @Override
    public PageTag selectPageTagById(Long id) {
        return pageTagMapper.selectPageTagById(id);
    }

    /**
     * 查询页面标签信息列表
     *
     * @param pageTag 页面标签信息
     * @return 页面标签信息
     */
    @Override
    public List<PageTag> selectPageTagList(PageTag pageTag) {
        return pageTagMapper.selectPageTagList(pageTag);
    }

    /**
     * 新增页面标签信息
     *
     * @param pageTag 页面标签信息
     * @return 结果
     */
    @Override
    public int insertPageTag(PageTag pageTag) {
        return pageTagMapper.insertPageTag(pageTag);
    }

    /**
     * 修改页面标签信息
     *
     * @param pageTag 页面标签信息
     * @return 结果
     */
    @Override
    public int updatePageTag(PageTag pageTag) {
        return pageTagMapper.updatePageTag(pageTag);
    }

    /**
     * 批量删除页面标签信息
     *
     * @param ids 需要删除的页面标签信息主键
     * @return 结果
     */
    @Override
    public int deletePageTagByIds(String ids) {
        return pageTagMapper.deletePageTagByIds(Convert.toStrArray(ids));
    }

    /**
     * 删除页面标签信息信息
     *
     * @param id 页面标签信息主键
     * @return 结果
     */
    @Override
    public int deletePageTagById(Long id) {
        return pageTagMapper.deletePageTagById(id);
    }

    @Override
    public List<PageTag> queryPageTagByImgId(Long imgId) {
        return this.pageTagMapper.queryPageTagByImgId(imgId);
    }

    @Override
    public List<FileInf> queryFileInfoByPageId(Long pageTagId) {
        return this.pageTagMapper.queryFileInfoByPageId(pageTagId);
    }

    @Override
    public List<FileInf> queryFileInfoByPageTagIds(List<Long> pageTagIds) {
        return this.pageTagMapper.selectFileInfoByPageTagIds(pageTagIds);
    }

    @Override
    @Transactional
    public int saveFilePageTagRef(FilePageTagRef filePageTagRef) {
        this.filePageTagRefMapper.deleteByFileId(filePageTagRef.getFileId());
        if (CollectionUtil.isNotEmpty(filePageTagRef.getPageTagIds())) {
            filePageTagRef.getPageTagIds().forEach(ptId -> {
                FilePageTagRef ref = new FilePageTagRef();
                ref.setFileId(filePageTagRef.getFileId());
                ref.setPageTagId(ptId);
                this.filePageTagRefMapper.insertFilePageTagRef(ref);
            });
        }
        return 1;
    }
}
